Conventional film and more recently, digital cameras, are widely commercially available, ranging both in price and in operation from sophisticated single lens reflex (SLR) cameras used by professional photographers to inexpensive “point-and-shoot” cameras that nearly anyone can use with relative ease. Unlike conventional film cameras, however, digital cameras typically collect frame data for displaying a “live view” for the user and/or for use in various processes embodied in firmware for the digital camera.
For purposes of illustration, frame data may be used by the firmware for auto-exposure calculations. The output may be used by another process to adjust exposure settings. More frame data may then be gathered using the new exposure settings to display a revised “live view” for the user and/or continued auto-exposure calculations. Of course gathering frame data and displaying the “live view” for the user typically occurs very fast, e.g., generating “live view” images on the order of 24 to 30 times per second.
In any event, the frame data may be needed by more than one process at a time and/or the results of various processes may be needed for another process. For example, frame data may be needed by both auto-exposure calculations and auto-focus calculations in addition, output from the auto-exposure calculations may also be needed for display calculations. Accordingly, firmware for the camera is written such that the frame data and results cascade from one process to the next.
Such firmware designs may result in slower operations (e.g., all processes may stall while waiting for one of the processes to complete) in addition, if a process is changed or a new process is added, the firmware may need to be rewritten to accommodate the change and/or new process.